# Разные конфиги у подов statefulSet

Для того что бы подставить индивидуальный конфиг поду 
statefulSet-а, можно воспользоваться initContainer и 
скриптом. В скрипте, в зависимости от имени пода, подготовить
необходимый файл конфигурации.

Простейший пример показан в файле [01-op-cm.yaml](01-op-cm.yaml).
В нём описаны два файла index.html, которые должны подставляться
в файловую систему пода. В зависимости от имени пода, будет
использоваться свой вариант файла.

В [statefulSet](02-openresty-sts.yaml) используются два 
контейнера.

* initContainer на основе образа busybox.
* Основной контейнер приложения.

К обоим контейнерам подключается файловая системе типа hostPath.
Задача initContainer-а поместить в эту фс необходимые конфигурационные
файлы. Исходные файлы, находятся в configMap, подключённом к
initContainer.

Для подстановки нужного файла в конкретный под, отвечает скрипт
conf.sh. В котором, в зависимости от имени контейнера, в
целевую директорию копируется определённый файл. Скрипт 
conf.sh запускается в initContainer statefulSet-а.

## Пример использования vmagent

В этом примере (файлы [03-prometheus-config.yaml](03-prometeus-config.yaml), 
[04-vmagent.yaml](04-vmagent.yaml) и [05-ingress.yaml](05-ingress.yml)) всё то же самое. Но есть проблема с 
ingress.

Что бы все работало корректно, необходимо что бы vmagent
в каждом поде запускался с отличным параметром -http.pathPrefix.
Что бы vmagent выдавал ответ с нужны путём в URL.

К сожалению я не знаю способа, как подставить необходимые 
парамеры в аргументы командной строки отличные для каждого
пода. 

Опять же, к сожалению, vmagent не умеет конфигурироваться через 
переменные среды окружения. Но это вопрос к программистам не 
следующим [рекомендации по конфигурации микросервисов](https://12factor.net/ru/config).
А именно: **Приложение двенадцати факторов хранит конфигурацию в переменных окружения**.
